const validate = require('../middleware/validate')
//引入数据验证的两个成员
const { body, param } = require('express-validator')

const mongoose = require('mongoose')
const { Article } = require('../model')

exports.createArticle=validate([
    body('article.title').notEmpty().withMessage('文章标题 不能为空'),
    body('article.description').notEmpty().withMessage('文章摘要 不能为空'),
    body('article.body').notEmpty().withMessage('文章内容 不能为空')
])

exports.getArticle = validate([
    validate.isValidObjectId(['params'],'articleId')
    // param('articleId').custom(async value=>{
    //    if(!mongoose.isValidObjectId(value)){
    //        //异步:失败
    //        return Promise.reject('文章ID类型错误')
        //同步:失败
        // throw new Error('文章ID类型错误')
    //    }
       //同步:成功
    //    return true
    // })
])

// 更新文章验证ID
exports.updateArticle = [
    validate([
    validate.isValidObjectId(['params'],'articleId')
]),

// 校验文章是否存在
async (req,res,next)=>{
    const articleId=req.params.articleId
    const article = await Article.findById(articleId)
    req.article = article
    if(!article){
        return res.status(404).end()
    }
    next()
},
// 修改的文章作者是否是当前登录用户
async (req,res,next)=>{
    console.log(req.user._id.toString(),req.article.author.toString())
    if(req.user._id.toString()!=req.article.author.toString()){
        return res.status(403).end()
    }
    next()
}

]

exports.deleteArticle = exports.updateArticle


